home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B).zip / Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B).do / PRO.VI.bas < prev    next >
BASIC Source File  |  1996-12-24  |  9KB  |  297 lines

  1. 10  GOSUB 9000
  2. 20  GOSUB 1000
  3. 30  GOSUB 2000
  4. 40  GOSUB 4000
  5. 45  GOSUB 5000
  6. 50  GOSUB 6000
  7. 60  GOTO 30
  8. 100  POKE 54,189: POKE 55,158
  9. 110  PRINT  CHR$(4);"RUN PHYSICS.MENU"
  10. 1000  REM <CTRL-J><CTRL-J>FINAL WORDS<CTRL-J>
  11. 1005  POKE 54,0: POKE 55,96
  12. 1010  HGR2 : VTAB 1
  13. 1020  PRINT "This is the end of the formal"
  14. 1021  PRINT : PRINT "demonstration.  If you would like, you"
  15. 1022  PRINT : PRINT "can experiment with projectile motion"
  16. 1023  PRINT : PRINT "with the use of this last part of the"
  17. 1024  PRINT : PRINT "program."
  18. 1025  PRINT : PRINT : PRINT "It allows you to enter an initial"
  19. 1026  PRINT : PRINT "velocity and angle of inclination of a"
  20. 1027  PRINT : PRINT "projectile and see the path traced out"
  21. 1028  PRINT : PRINT "on the computer's high resolution"
  22. 1029  PRINT : PRINT "screen."
  23. 1050  GOSUB 15000
  24. 1080  RETURN 
  25. 2000  REM <CTRL-J><CTRL-J>GET INFORMATION<CTRL-J>
  26. 2010  HGR2 
  27. 2020  VTAB 1
  28. 2025  POKE 54,0: POKE 55,96
  29. 2030  PRINT "1.  Initial velocity ";V0;"m/sec   "
  30. 2040  PRINT : PRINT "2.  Angle of inclin. ";AN; CHR$(2);"   "
  31. 2050  PRINT : PRINT "3.  max Y (height)   "; INT(183/YS);"   "
  32. 2060  PRINT : PRINT "4.  max X (distance) "; INT(274/XS);"   "
  33. 2070  PRINT : PRINT "5.  Trace mode       ";TR$(TR);"   "
  34. 2080  PRINT : PRINT 
  35. 2090  PRINT "6.  Dotted lines"
  36. 2100  PRINT : PRINT "7.  Graph projectile"
  37. 2110  PRINT : PRINT "8.  End and return to MAIN MENU"
  38. 2120  PRINT : PRINT "Enter your choice."
  39. 2130 VT = 20
  40. 2140  GOSUB 17000
  41. 2150 CH =  VAL(G$)
  42. 2160  IF CH < = 0  OR CH >9  THEN 2010
  43. 2170  ON CH GOTO 2180,2230,2280,2540,2800,2820,2980,100
  44. 2180  VTAB 18:VT = 20
  45. 2190  PRINT "Enter new initial velocity."
  46. 2200  GOSUB 17000
  47. 2210 V0 =  VAL(G$)
  48. 2211  FOR Y = 18 TO 23
  49. 2212  VTAB Y: PRINT "                                       "
  50. 2213  NEXT Y
  51. 2220  GOTO 2020
  52. 2230  VTAB 18:VT = 20
  53. 2240  PRINT "Enter new angle of inclination."
  54. 2250  GOSUB 17000
  55. 2260 AN =  VAL(G$)
  56. 2261  FOR Y = 18 TO 23
  57. 2262  VTAB Y: PRINT "                                       "
  58. 2263  NEXT Y
  59. 2270  GOTO 2020
  60. 2280  HGR2 : VTAB 1
  61. 2290  PRINT "The following are choices for the"
  62. 2300  PRINT : PRINT "maximum height that will fit on the"
  63. 2310  PRINT : PRINT "graph.  Which one would you like??"
  64. 2320  PRINT 
  65. 2330  PRINT "1.  183m"
  66. 2340  PRINT "2.  91m"
  67. 2350  PRINT "3.  61m"
  68. 2360  PRINT "4.  45m"
  69. 2370  PRINT "5.  36m"
  70. 2380  PRINT "6.  other"
  71. 2390  PRINT : PRINT "enter your choice"
  72. 2400 VT = 16: GOSUB 17000
  73. 2410 YS =  VAL(G$)
  74. 2420  IF YS <0  OR YS >6  OR YS < > INT(YS)  THEN  HGR2 :VT = 1: GOTO 2280
  75. 2430  IF YS < >6  THEN 2530
  76. 2440  HGR2 : VTAB 1
  77. 2450  PRINT "Please enter a number to indicate the"
  78. 2460  PRINT : PRINT "maximum height on the graph.  When you"
  79. 2470  PRINT : PRINT "divide 183 by this number, you will have"
  80. 2480  PRINT "the number of meters that will fit on"
  81. 2490  PRINT : PRINT "the graph."
  82. 2500 VT = 11
  83. 2510  GOSUB 17000
  84. 2520 YS =  VAL(G$)
  85. 2530  GOTO 2010
  86. 2540  HGR2 : VTAB 1
  87. 2550  PRINT "The following choices are for the"
  88. 2560  PRINT : PRINT "maximum distance that will fit on the"
  89. 2570  PRINT : PRINT "screen.  Which one would you like??"
  90. 2580  PRINT 
  91. 2590  PRINT "1.  274m"
  92. 2600  PRINT "2.  137m"
  93. 2610  PRINT "3.  92m"
  94. 2620  PRINT "4.  68m"
  95. 2630  PRINT "5.  54m"
  96. 2640  PRINT "6.  other"
  97. 2650  PRINT : PRINT "enter your choice"
  98. 2660 VT = 16: GOSUB 17000
  99. 2670 XS =  VAL(G$)
  100. 2680  IF XS <0  OR XS >6  OR XS < > INT(XS)  THEN  HGR2 :VT = 1: GOTO 2540
  101. 2690  IF XS < >6  THEN 2790
  102. 2700  HGR2 : VTAB 1
  103. 2710  PRINT "Please enter a number to indicate the"
  104. 2720  PRINT : PRINT "maximum distance on the graph.  When you"
  105. 2730  PRINT "divide 274 by this number, you will have"
  106. 2740  PRINT "the number of meters that will fit on"
  107. 2750  PRINT : PRINT "the graph."
  108. 2760 VT = 11
  109. 2770  GOSUB 17000
  110. 2780 XS =  VAL(G$)
  111. 2790  GOTO 2010
  112. 2800 TR = TR +1 -2 *(TR = 1)
  113. 2810  GOTO 2010
  114. 2820  HGR2 : VTAB 1
  115. 2830  PRINT "Where would you like the dotted lines?"
  116. 2840  PRINT "(press 'G' to Go back to menu)"
  117. 2850  PRINT : PRINT "1.  greatest height reached."
  118. 2860  PRINT "2.  midpoint of total distance."
  119. 2870  PRINT "3.  point where it hits ground."
  120. 2880  FOR J = 1 TO 3
  121. 2890  VTAB J +3: HTAB 35
  122. 2900  IF DOT(J) = 1  THEN  PRINT "Yes": GOTO 2920
  123. 2910  PRINT "No "
  124. 2920  NEXT J
  125. 2930 VT = 10: GOSUB 17000
  126. 2940  IF G$ = "G"  THEN 2010
  127. 2950 J =  VAL(G$)
  128. 2960 DOT(J) = DOT(J) +1 -2 *(DOT(J) = 1)
  129. 2970  GOTO 2880
  130. 2980  RETURN 
  131. 4000  REM <CTRL-J><CTRL-J>SET UP GRID<CTRL-J>
  132. 4010  HGR2 
  133. 4020  HCOLOR= 3
  134. 4030  HPLOT 5,0 TO 5,183 TO 279,183
  135. 4040  FOR X = 0 TO  INT(274/XS)
  136. 4050 Y1 = 187
  137. 4060  IF X/5 =  INT(X/5)  THEN Y1 = 189
  138. 4070  IF X/10 =  INT(X/10)  THEN Y1 = 191
  139. 4080  HPLOT X *XS +5,183 TO X *XS +5,Y1
  140. 4090  NEXT X
  141. 4100  FOR Y = 0 TO  INT(183/YS)
  142. 4110 X1 = 3
  143. 4120  IF Y/5 =  INT(Y/5)  THEN X1 = 1
  144. 4130  IF Y/10 =  INT(Y/10)  THEN X1 = 0
  145. 4140  HPLOT 5,183 -Y *YS TO X1,183 -Y *YS
  146. 4150  NEXT Y
  147. 4160  RETURN 
  148. 5000  REM <CTRL-J><CTRL-J>dotted lines<CTRL-J>
  149. 5010 THETA = AN *3.141592653/180
  150. 5020 VH = V0 * COS(THETA):VV = V0 * SIN(THETA)
  151. 5030 T = (0 -VV)/G
  152. 5040 S = 1/2 *G *T *T +VV *T
  153. 5050  IF DOT(1) = 0  THEN 5120
  154. 5060 Y = 183 -S *YS
  155. 5070  IF Y <0  OR Y >183  THEN 5120
  156. 5080  HCOLOR= 3
  157. 5090  FOR X = 5 TO 265  STEP 10
  158. 5100  HPLOT X,Y TO X +5,Y
  159. 5110  NEXT X
  160. 5120  IF DOT(2) = 0  THEN 5190
  161. 5130 D = T *VH
  162. 5140 X = 5 +D *XS
  163. 5150  IF X <5  OR X >279  THEN 5190
  164. 5160  FOR Y = 183 TO 10  STEP  -10
  165. 5170  HPLOT X,Y TO X,Y -5
  166. 5180  NEXT Y
  167. 5190  IF DOT(3) = 0  THEN 5260
  168. 5200 D = T *2 *VH
  169. 5210 X = 5 +D *XS
  170. 5220  IF X <5  OR X >279  THEN 5260
  171. 5230  FOR Y = 183 TO 10  STEP  -10
  172. 5240  HPLOT X,Y TO X,Y -5
  173. 5250  NEXT Y
  174. 5260  RETURN 
  175. 6000  REM <CTRL-J><CTRL-J>THROW BALL<CTRL-J>
  176. 6010 T = 0:X1 = 0:Y1 = 0
  177. 6020  HCOLOR= 3
  178. 6030  HPLOT 5,183
  179. 6040 T = T +.05
  180. 6050 H = 1/2 *G *T *T +VV *T
  181. 6060 D = VH *T
  182. 6070 X = XS *D +5
  183. 6080 Y = 183 -H *YS
  184. 6090  IF X >279  THEN 6230
  185. 6100  IF TR = 1  THEN 6180
  186. 6110  HCOLOR= 0
  187. 6120  HPLOT X1,Y1
  188. 6130  IF H < = 0  THEN 6230
  189. 6140  IF Y <0  THEN 6220
  190. 6150  HCOLOR= 3
  191. 6160  HPLOT X,Y
  192. 6170  GOTO 6210
  193. 6180  IF Y <0  THEN 6210
  194. 6190  HPLOT  TO X,Y
  195. 6200  IF H < = 0  THEN 6230
  196. 6210 X1 = X:Y1 = Y
  197. 6220  GOTO 6040
  198. 6230  POKE  -16368,0
  199. 6240  IF  PEEK( -16384) = 160  THEN 6250
  200. 6242 S = S +1: IF S >5  THEN S = 0:J =  PEEK( -16336)
  201. 6244  GOTO 6240
  202. 6250  RETURN 
  203. 9000  REM <CTRL-J><CTRL-J>INITIALIZE<CTRL-J>
  204. 9010  HIMEM: 16384
  205. 9020  IF  PEEK(24576) = 72  THEN 9050
  206. 9030  PRINT  CHR$(4);"BLOAD HIRES CHAR"
  207. 9040  PRINT  CHR$(4);"BLOAD CHAR TABLE"
  208. 9050 VT = 1:SOUND = 0:CENTER = 0:WIDTH = 40
  209. 9060 G =  -9.8
  210. 9070  HOME 
  211. 9080 XS = 3:YS = 3
  212. 9090 TR$(0) = "OFF":TR$(1) = "ON"
  213. 9100  FOR X = 768 TO 786
  214. 9110  READ Y
  215. 9120  POKE X,Y
  216. 9130  NEXT X
  217. 9140  RETURN 
  218. 9300 :
  219. 9310 '' DATA 
  220. 9320 :
  221. 9330  DATA   173,48,192,136,208,4,198,7,240,8,202,208,246,166,6,76,0,3,96
  222. 15000  REM <CTRL-J><CTRL-J>PRESS ANY KEY<CTRL-J>
  223. 15010  POKE  -16368,0
  224. 15020 CU$ = "!/-\": VTAB 24
  225. 15030  PRINT "! press any key"
  226. 15040 C = 1:L = 4
  227. 15050  VTAB 24: HTAB 1: PRINT  MID$ (CU$,C,1)
  228. 15060 KEY =  PEEK( -16384): IF KEY <128  THEN C = C +1 -L *(C = L): GOTO 15050
  229. 15070  HGR2 : VTAB 1: RETURN 
  230. 17000  REM <CTRL-J><CTRL-J>HIRES INPUT<CTRL-J>
  231. 17010  POKE  -16368,0
  232. 17020  HTAB 1: VTAB VT
  233. 17030  PRINT "===>"
  234. 17040 HT = 4
  235. 17050 G$ = ""
  236. 17060 A =  PEEK( -16384)
  237. 17070  VTAB VT: HTAB HT +1: PRINT " "
  238. 17080  VTAB VT: HTAB HT +1: PRINT  CHR$(95)
  239. 17090  IF A <127  THEN 17060
  240. 17100  POKE  -16368,0
  241. 17110  IF A = 141  THEN 17600
  242. 17120  IF A = 155  THEN 17580
  243. 17130  IF A < >147  THEN 17160
  244. 17140 SOUND = SOUND +1: IF SOUND = 2  THEN SOUND = 0
  245. 17150  GOTO 17060
  246. 17160  IF A < >136  THEN 17380
  247. 17170  IF   NOT SOUND  THEN 17210
  248. 17180  FOR Z = 1 TO 20  STEP 5
  249. 17190  POKE 6,Z: POKE 7,2: CALL 768
  250. 17200  NEXT 
  251. 17210 L =  LEN(G$)
  252. 17220  IF L >1  THEN 17320
  253. 17230  IF L = 1  THEN 17290
  254. 17240  IF   NOT SOUND  THEN 17290
  255. 17250  FOR Y = 1 TO 10
  256. 17260  FOR Z = 1 TO 25  STEP 6
  257. 17270  POKE 6,Z: POKE 7,3: CALL 768
  258. 17280  NEXT : NEXT 
  259. 17290  VTAB VT: HTAB 5: PRINT "     "
  260. 17300 G$ = "":HT = 4
  261. 17310  GOTO 17060
  262. 17320 L = L -1
  263. 17330 G$ =  LEFT$(G$,L)
  264. 17340 HT = L +4
  265. 17350  VTAB VT: HTAB HT +1: PRINT "  "
  266. 17360  VTAB VT +1: HTAB HT +1: PRINT " "
  267. 17370  GOTO 17060
  268. 17380 A = A -128
  269. 17390  IF A >64  AND A <91  THEN 17420
  270. 17400 A$ =  CHR$(A)
  271. 17410  GOTO 17430
  272. 17420 A$ =  CHR$(A +32 -32 *(UC >0))
  273. 17430 G$ = G$ +A$
  274. 17440 L =  LEN(G$)
  275. 17450 HT = L +4
  276. 17460  IF SUB = 0  THEN 17510
  277. 17470  IF A$ = "+"  OR A$ = "-"  THEN S = 1
  278. 17480  IF S = 1  THEN 17510
  279. 17490  IF  ASC(A$) <48  OR  ASC(A$) >57  THEN 17510
  280. 17500  VTAB VT +1: HTAB HT: PRINT A$: GOTO 17520
  281. 17510  VTAB VT: HTAB HT: PRINT A$
  282. 17520  IF UC = 1  THEN UC = 0
  283. 17530  IF   NOT SOUND  THEN 17570
  284. 17540  FOR Z = 20 TO 1  STEP  -2
  285. 17550  POKE 6,Z: POKE 7,2: CALL 768
  286. 17560  NEXT 
  287. 17570  GOTO 17060
  288. 17580 UC = UC +1: IF UC = 3  THEN UC = 0
  289. 17590  GOTO 17060
  290. 17600  VTAB VT: HTAB HT +1: PRINT " "
  291. 17610  IF   NOT SOUND  THEN 17660
  292. 17620  FOR Y = 1 TO 3
  293. 17630  FOR Z = 40 TO 1  STEP  -4
  294. 17640  POKE 6,Z: POKE 7,2: CALL 768
  295. 17650  NEXT : NEXT 
  296. 17660 VT = VT +2
  297. 17670  RETURN